package com.bidevalution.dao.mapper;

import com.bidevalution.dao.entity.BeSectionExpertInfo;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 *  * 2020-03-25 胡一奇 BUG：ZTKP-3996 专家名字写错，删除专家，再次添加，输入身份证后提示的专家信息仍然是错的，并且无法修改。
 * 								   推送中标结果时的报表，专家多了一条数据。
 */
public interface BeSectionExpertInfoMapper {

    /**
     * 根据标段id获取专家列表
     * @param sectionId
     * @return
     */
    List<BeSectionExpertInfo> getExpertListBySectionId( @Param("sectionId")String sectionId, @Param("voteType")String voteType,
                                                        @Param("submitCode")String submitCode);
    List<BeSectionExpertInfo> getListBySectionId(String sectionId);

    /**
     * 根据标段id和专家身份证号判断查询专家信息
     *
     * @param sectionId
     * @param cardNo
     * @return
     */
    BeSectionExpertInfo getSectionExpertInfo(@Param("sectionId") String sectionId, @Param("cardNo") String cardNo);

    /**
     * 根据标段id和专家登录账号查询专家信息
     *
     * @param sectionId
     * @param loginName
     * @return
     */
    BeSectionExpertInfo selectByLoginName(@Param("sectionId") String sectionId, @Param("loginName") String loginName);

    /**
     * 根据标段id统计专家数量
     * @param sectionId
     * @return
     */
    int countBySectionId(String sectionId);

    int deleteByPrimaryKey(String seqId);
    /*Begin 2020-03-25 胡一奇 BUG：ZTKP-3996 专家名字写错，删除专家，再次添加，输入身份证后提示的专家信息仍然是错的，并且无法修改。
     推送中标结果时的报表，专家多了一条数据。*/
    /**
     * 删除推送表里的专家信息
     * @param sectionCode 项目编号
     * @param expertCode 专家编号
     * @return
     */
    int deleteEvaluationRecord(@Param("sectionCode") String sectionCode, @Param("expertCode") String expertCode);

    long countBeforeExpert(@Param("cardNo") String cardNo, @Param("date") String date);
    /*End 2020-03-25 胡一奇 BUG：ZTKP-3996 专家名字写错，删除专家，再次添加，输入身份证后提示的专家信息仍然是错的，并且无法修改。
     推送中标结果时的报表，专家多了一条数据。*/

    int insert(BeSectionExpertInfo record);

    int insertSelective(BeSectionExpertInfo record);

    BeSectionExpertInfo selectByPrimaryKey(String seqId);

    /**
     * 根据主键选择性更新
     *
     * @param record
     * @return
     */
    int updateByPrimaryKeySelective(BeSectionExpertInfo record);

    /**
     * 保存专家回避原因并更新回避状态
     *
     * @param record
     * @return
     */
    int updateAvoidReason(BeSectionExpertInfo record);



    int updateByPrimaryKey(BeSectionExpertInfo record);

    /**
     * 根据标段id和专家登录账号查询专家回避状态和评审状态
     *
     * @param sectionId
     * @param loginName
     * @return
     */
    Map<String,Object> queryByLoginName(@Param("sectionId") String sectionId, @Param("loginName") String loginName);

    List<BeSectionExpertInfo> getList(@Param("sectionId")String sectionId, @Param("isAvoid")String isAvoid);

    /**
     * 获取标段中的专家组长
     * @param sectionId 标段id
     * @return 返回组长信息
     */
    List<BeSectionExpertInfo> getExpertManager(@Param("sectionId") String sectionId);

    /**
     * 根据专家身份证号和标段编号查询专家登录名
     * @param sectionCode
     * @param expertCardNo
     * @return
     */
    String getExpertLoginName(@Param("sectionCode")String sectionCode, @Param("expertCardNo")String expertCardNo);
}